/**
 * unknow 类型  表示不知道自己是什么类型  很多人会和 any类型搞混
 *  any 类型表示的是可以是任意的类型  unknow类型表示的不知道自己是什么类型 但是它有自己的类型！！
 *
 *  any 和 unknow 类型都可以使用 as 关键字 转而确定类型
 */
var jimmy = 'Jimmy';
/**
 * 会报错  虽然unknow类型的值是 字符串 但是它是unknow类型 不是string类型 所以直接赋值的时候会报错
 */
// let str:string = jimmy
/**
 * 这样写并不会报错 配合上 as 关键字
 *  等于将 unknow类型 转成了 string类型 这时候就可以正常的赋值了
 */
var str = jimmy;
/**
 * 下面这样写会报错
 *   已知的类型使用 as 来进行转的时候会直接报错 因为ts还是认为 直接的类型转换可能会出现问题
 *    解决这种问题 可以将一个确定类型先转成 unknow 类型 再转成 需要转的类型
 *
 *  let str2:number = xuexue as unknown as number
 *
 */
var xuexue = '99';
// let str2: number = xuexue as number  // 报错
var str2 = xuexue; // 正常不报错
